import { createApp } from 'vue'
import './style.css'
import App from './App.vue'
import router from './router'
import { checkLocalStorageData, isMigrationCompleted } from './services/migrationService'

// Element Plus 组件库
import ElementPlus from 'element-plus'
import 'element-plus/dist/index.css'
import 'element-plus/theme-chalk/dark/css-vars.css'

// 导入全局样式文件
import './styles/globla.scss'

// Element Plus 图标
import * as ElementPlusIconsVue from '@element-plus/icons-vue'

// GSAP 动画库
import { gsap } from 'gsap'

/**
 * 创建Vue应用实例
 */
const app = createApp(App)

/**
 * 配置Element Plus
 */
app.use(ElementPlus, {
  // 设置组件大小
  size: 'default',
  // 设置z-index基础值
  zIndex: 3000,
})

/**
 * 注册Element Plus图标组件
 */
for (const [key, component] of Object.entries(ElementPlusIconsVue)) {
  app.component(key, component)
}

/**
 * 使用路由
 */
app.use(router)

/**
 * 全局配置
 */
app.config.globalProperties.$gsap = gsap

/**
 * 全局错误处理
 */
app.config.errorHandler = (err, vm, info) => {
  console.error('全局错误:', err)
  console.error('错误信息:', info)
  console.error('组件实例:', vm)
}

/**
 * 全局警告处理
 */
app.config.warnHandler = (msg, vm, trace) => {
  console.warn('全局警告:', msg)
  console.warn('组件实例:', vm)
  console.warn('组件追踪:', trace)
}

/**
 * 开发环境配置
 */
if (import.meta.env.DEV) {
  // 开发环境下启用性能追踪
  app.config.performance = true
  
  // 开发环境下的调试信息
  console.log('🚀 智能体分享平台启动')
  console.log('📦 Vue版本:', app.version)
  console.log('🎨 主题: 赛博朋克')
  console.log('⚡ 动画引擎: GSAP')
  console.log('🧩 组件库: Element Plus')
}

/**
 * 数据迁移检测
 * 在应用启动时检查是否需要进行数据迁移
 */
async function checkDataMigration() {
  try {
    // 检查是否已经完成迁移
    if (isMigrationCompleted()) {
      console.log('✅ 数据迁移已完成')
      return
    }

    // 检查localStorage中是否有数据需要迁移
    const { hasData, count } = checkLocalStorageData()
    if (hasData) {
      console.log(`🔄 检测到 ${count} 个智能体数据需要迁移`)
      
      // 在应用实例上设置迁移标记，供组件使用
      app.config.globalProperties.$needsMigration = true
      app.config.globalProperties.$migrationDataCount = count
    } else {
      console.log('✅ 没有需要迁移的数据')
    }
  } catch (error) {
    console.error('❌ 数据迁移检测失败:', error)
  }
}

/**
 * 挂载应用
 */
async function mountApp() {
  // 先进行数据迁移检测
  await checkDataMigration()
  
  // 挂载应用
  app.mount('#app')
}

// 启动应用
mountApp()

/**
 * 导出应用实例供其他模块使用
 */
export default app
